# 导入第三方包
import matplotlib.pyplot as plt
import pandas as pd

# 读入外部数据
data3 = pd.read_excel('data3.xlsx')
# 查看数据的规模
print("数据大小为：" + str(data3.shape))
# 数值型转字符型
data3['id'] = data3['id'].astype(str)
# 字符型转数值型
data3['custom_amt'] = data3['custom_amt'].str[1:].astype(float)
# 字符型转日期型
data3['order_date'] = pd.to_datetime(data3['order_date'], format = '%Y年%m月%d日')
# 重新查看数据集的各变量类型
print('整理后的各变量类型：')
print(data3.dtypes)
# 预览数据的前5行
print('预览数据的前5行：')
print(data3.head())
# 判断数据中是否存在重复观测
print('判断数据中是否存在重复观测：')
print(data3.duplicated().any())

# 判断各变量中是否存在缺失值  True说明对应的列有缺失值 False说明对应的列没有缺失值
print('判断各变量中是否存在缺失值:')
print(data3.isnull().any(axis = 0))
# 各变量中缺失值的数量
print('各变量中缺失的数量：')
print(data3.isnull().sum(axis = 0))
# 各变量中缺失值的比例
print('各变量中缺失的比例')
print(data3.isnull().sum(axis = 0)/data3.shape[0])
# 删除字段 -- 如删除缺失率非常高的edu变量
print('删除缺失率非常高的edu变量')
data3.drop(labels = 'edu', axis = 1, inplace=True)
# 数据预览
print('删除变量后的数据预览(也是默认显示前5行)：')
print(data3.head())
# 删除观测，-- 如
print('删除age变量中所对应的缺失观测')
print('删除之前的规模：' + str(data3.shape))
data3_new = data3.drop(labels = data3.index[data3['age'].isnull()], axis = 0)
# 查看数据的规模
print('删除之后的规模：' + str(data3_new.shape))


# # 构造数据
# df = pd.DataFrame(dict(name = ['张三','李四','王二','张三','赵五','丁一','王二'],
#                       gender = ['男','男','女','男','女','女','男'],
#                       age = [29,25,27,29,21,22,27],
#                       income = [15600,14000,18500,15600,10500,18000,13000],
#                       edu = ['本科','本科','硕士','本科','大专','本科','硕士']))
# # 查看数据
# print('创建的一组新的数据为：')
# print(df)
# # 判断数据中是否存在重复观测
# print('判断数据中是否存在重复观测：')
# print(df.duplicated().any())
# # 把name 和age 相同的元组判定为重复项，去除多余的重复项
# print(df.drop_duplicates(subset=['name','age']))
